<?php
App::uses('AppController', 'Controller');

/**
 * Maneja la información a mostrar el la página de inicio
 * 
 * @author vcanizares
 */
class CitaController extends AppController {
	
	/**
	 * Nombre del controlador
	 */
	public $name = 'Cita';
	
	/**
	 * Constantes
	 */
	const ID_OPCION_MENU = 2;
	
	/**
	 * Componentes
	 */
	public $components = array('Menu');
	
	/**
	 * Helpers
	 */
	public $helpers = array('Observador', 'Especie', 'AoaText', 'AoaTable');
	
	/**
	 * Modelos
	 */
	public $uses = array('Cita', 'AsoCitaObservador', 'Especie', 'OrdenTaxonomico', 'Lugar', 'ClaseEdadSexo', 'ClaseReproduccion', 'Observador');
	
	/**
	 * Función que se ejecuta al carga la página inicial
	 */
	public function index() {
		
		// Generamos la opciones de menu
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
	}
	
	/**
	 * Función que se ejecuta al carga la página inicial
	 */
	public function editar() {
		
		// Generamos la opciones de menu
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
	}
	
	/**
	 * Función que se ejecuta al carga la página inicial
	 */
	public function nueva() {
		
		/*
		 * Generamos la opciones de menu
		 */ 
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
		
		/*
		 * Clases de reproduccion
		 */
		$clasesReproduccion = $this->ClaseReproduccion->find('all', array(
			'fields' => array('ClaseReproduccion.id', 'ClaseReproduccion.tipoCria', 'ClaseReproduccion.descripcion'),
      		'conditions' => array('ClaseReproduccion.indActivo' => 1),
			'order'=> array("ClaseReproduccion.idTipoCria"),
			'recursive'=>-1
		));
		$this->set('clasesReproduccion', $clasesReproduccion);
		
		/*
		 * Lugares
		 */
		$lugares = $this->Lugar->find('all', array(
			'fields' => array('Lugar.id', 'Lugar.nombre', 'Municipio.nombre', 'CuadriculaUtm.codigo', 'Comarca.nombre'),
			'conditions'=>array('Lugar.indActivo'=>1),
			'order'=>array('Lugar.nombre ASC')
		));
		$this->set('lugares', $lugares);
	}
	
	public function buscar_especies() {
		
		$this->Especie->recursive = -1;
		
		$especiesEncontradas = array();
		
		if ($this->request->is('ajax')) {
			
			$this->autoRender = false;
			$results = $this->Especie->find(
				'all', 
				array('fields' => array('Especie.id', 'Especie.nombreComun', 'Especie.genero', 'Especie.especie'),
      			'conditions' => array('OR' => array('Especie.nombreComun LIKE ' => '%' . $this->request->query['term'] . '%', 'Especie.genero LIKE ' => '%' . $this->request->query['term'] . '%', 'Especie.especie LIKE ' => '%' . $this->request->query['term'] . '%'))
			));
			foreach($results as $result) {
				$nombreComun = $result['Especie']['nombreComun'];
				array_push($especiesEncontradas, array("id"=>$result['Especie']['id'],"value"=>ucfirst($nombreComun).", ".$result['Especie']['genero']." ".$result['Especie']['especie']));
			}
			
			echo json_encode($especiesEncontradas);
		} 
	}
	
	public function buscar_observadores() {
		
		$this->Observador->recursive = -1;
		
		$observadoresEncontrados = array();
		
		if ($this->request->is('ajax')) {
			
			$this->autoRender = false;
			$results = $this->Observador->find(
				'all', 
				array('fields' => array('Observador.id', 'Observador.nombre', 'Observador.codigo'),
      			'conditions' => array('OR' => array('Observador.nombre LIKE ' => '%' . $this->request->query['term'] . '%', 'Observador.codigo LIKE ' => '%' . $this->request->query['term'] . '%'))
			));
			foreach($results as $result) {
				array_push($observadoresEncontrados, array("id"=>$result['Observador']['id'],"value"=>$result['Observador']['codigo']." - ".$result['Observador']['nombre']));
			}
			
			echo json_encode($observadoresEncontrados);
		} 
	}
	
	/**
	 * Función que se ejecuta al carga la página inicial
	 */
	public function nueva_multiple() {
		
		// Generamos la opciones de menu
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
	}
	
	/**
	 * Función que se ejecuta al cargar la página de detalle de una cita
	 */
	public function detalle() {
		
		// Generamos la opciones de menu
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
		
		// Recogemos los parámetros de la request
		$id_cita = $this->request->named['id'];
		
		/*
		 * Datos generales cita
		 */ 
		$cita = $this -> Cita -> obtenerTodoPorId($id_cita);
		
		/*
		 * Observadores 
		 */
		$cita['observadores'] = $this -> AsoCitaObservador -> obtenerObservadoresPorCita($id_cita);
		
		/*
		 * Especie
		 */
		$cita['Especie'] = $this -> Especie -> obtenerTodoPorId($cita['Especie']['id']);
		
		/*
		 * Orden taxonomico
		 */
		$this->OrdenTaxonomico->id = $cita['Especie']['Familia']['orden_taxonomico_id'];
		$cita['Especie']['OrdenTaxonomico']['nombre'] = $this->OrdenTaxonomico->field("nombre");
		
		/*
		 * Ubicacion
		 */
		$cita['Lugar'] = $this -> Lugar -> obtenerTodoPorId($cita['Lugar']['id']);
		
		/*
		 * Clase edad sexo
		 */
		$i = 0;
		foreach ($cita['AsoCitaClaseEdadSexo'] as $claseEdadSexo) {
			$this->ClaseEdadSexo->id = $claseEdadSexo['clase_edad_sexo_id'];
			$cita['AsoCitaClaseEdadSexo'][$i]['clase_edad_sexo_nombre'] = $this->ClaseEdadSexo->field("nombre");
			$i++;
		}
		
		$this->set('cita', $cita);
	}
	
	/**
	 * Función que se ejecuta al carga la página inicial
	 */
	public function fotos() {
		
		// Generamos la opciones de menu
		$opciones_menu_superior = $this -> Menu -> generarItemsMenu($this::ID_OPCION_MENU);
		$this->set('opciones_menu_superior', $opciones_menu_superior);
	}
}
?>